package san.java.day15;

/**
 * 多线程的创建与启动:
 *  Java语言的JVM允许程序运行多个线程,它通过java.lang.Thread类来实现
 *
 *  特性:
 *      1. 每个线程都是通过某个Thread对象的run()来完成操作的,经常把run()方法的主体称为线程体
 *      2. 通过该Thread对象的start()方法来调用这个线程
 *
 *  Thread:
 *      1. Thread(): 创建新的Thread对象
 *      2. Thread(String threadname): 创建线程并指定线程实例名
 *      3. Thread(Runnable target): 创建Thread对象, 它实现了Runnable接口中的run方法
 *      4. Thread(Runnable target, String threadname)
 *
 *  创建线程的两种方法:
 *      1. 继承Thread类
 *          1) 定义子类继承Thread类
 *          2) 子类中重写Thread类中的run方法
 *          3) 创建Thread子类对象,即创建了线程对象
 *          4) 调用线程对象的start方法: 启动线程,调用run方法
 *
 *      2. 实现Runnable接口:
 *
 *  两种创建线程方式的优缺点和区别:
 *      区别:
 *
 *      接口方式的好处:
 *          1) 避免了单继承的局限性: 继承了Thread类就无法继承其他类
 *          2) 多个线程可以共享同一个接口来实现类的对象,非常适合多个线程来处理同一份资源
 *
 * 使用多线程的优点:
 *  1. 提高应用程序的响应. 对图形化界面更有意义
 *  2. 提高计算机系统CPU的利用率
 *  3. 改善程序结构, 将一个进程的任务分割为不同线程,便于理解和修改
 *
 */

public class Thread_02 {
    public static void main(String[] args) {
        // 1. 继承Thread类
        Thread t0 = new TestThread();
        t0.start();

        Thread t1 = new TestThread();
        t1.start();

        // 2. 实现Runnable接口
        Thread t2 = new Thread(new TestRunnable(), "t2");
        t2.start();

        Thread t3 = new Thread(new TestRunnable(), "t3");
        t3.start();

        Thread t4 = new Thread(new TestRunnable(), "t4");
        t4.start();
    }
}
